package com.iceclean.dao;

import com.iceclean.po.Post;
import com.iceclean.po.PostBar;

import java.util.List;

/**
 * @author : Ice'Clean
 * @date : 2021-05-04
 *
 * 贴吧表操作接口
 */
public interface PostBarDao {
    /**
     * 通过贴吧 id 寻找贴吧
     * @param postBarId 贴吧 id
     * @return 贴吧实体
     */
    PostBar findPostBarById(int postBarId);

    /**
     * 通过贴吧名寻找贴吧
     * @param postBarName 贴吧名称
     * @return 贴吧实体
     */
    PostBar findPostBarByName(String postBarName);

    /**
     * 通过页数寻找所有已经审核过的贴吧
     * @param page 页数
     * @param num 每页的数目
     * @return 符合条件的贴吧
     */
    List<PostBar> findPostBarsByPageForChecked(int page, int num);

    /**
     * 通过页数寻找所有还没有审核的贴吧
     * @param page 页数
     * @param num 每页的数目
     * @return 符合条件的贴吧
     */
    List<PostBar> findPostBarsByPageForUnChecked(int page, int num);

    /**
     * 通过页数获取指定用户创建的贴吧
     * @param userId 用户 id
     * @param page 页数
     * @param num 每页的数目
     * @return 贴吧实体
     */
    List<PostBar> findUserPostBarByPage(int userId, int page, int num);

    /**
     * 通过页数和搜索字段查询指定贴吧（模糊搜索）
     * @param search 搜索字段
     * @param page 页数
     * @param num 每页的数目
     * @return 符合条件的贴子集合
     */
    List<PostBar> searchPostBarByPage(String search, int page, int num);

    /**
     * 获取搜索到的贴吧总数
     * @param search 搜索字段
     * @return 以该字段在贴吧内搜索到的贴子总数
     */
    int getAllSearchForNumber(String search);

    /**
     * 获取所有已审核的贴吧的数目
     * @return 所有贴吧数
     */
    int getNumberOfAllPostBarForChecked();

    /**
     * 获取所有未审核的贴吧的数目
     * @return 所有贴吧数
     */
    int getNumberOfAllPostBarForUnChecked();

    /**
     * 创建贴吧
     * @param userId 创建者id
     * @param postBarName 贴吧名称
     * @param postBarResume 贴吧简介
     * @return 新贴吧id
     */
    int createPostBar(int userId, String postBarName, String postBarResume);

    /**
     * 更新贴吧数据
     * @param postBar 已更新数据的贴吧实体
     * @return 是否更新成功
     */
    boolean updatePostBar(PostBar postBar);

    /**
     * 根据贴吧 id 删除贴吧
     * @param postBarId 贴吧 id
     * @return 是否删除成功
     */
    boolean deletePostBar(int postBarId);
}
